<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // class类的声明 

        // 要求实现出来一个Person的对象，内有name和age属性，一个eat方法：

        //1. ES5标准的写法：
        // 声明一个构造函数
        function Person1(name, age){
            this.name = name;
            this.age = age;
        }
        // 为当前构造函数的原型添加一个方法
        Person1.prototype.eat = function(){
            console.log(this.name, "爱吃黄焖鸡");
        }
        // 实例化使用
        var p1 = new  Person1("王建国",22);
        p1.eat();
        console.log(p1);


        //2. 使用ES6标准写法：
        // 声明一个类
        class Person2{
            // 定义成员属性(可选)
            sex = "男";
            city = "北京";
            name;
            age;

            // 定义成员方法

            // 声明构造方法
            constructor(name, age){
                this.name = name;
                this.age = age;
                // this.sex = "男";
                // this.city = "北京";
            } 
            // 声明普通方法
            eat(){
                console.log(this.name, "爱吃黄焖鸡");
            }
            
        }
        // 实例化使用， 当使用new去实例化一个类时，会自动调用类中的constructor方法
        const p2 = new Person2("王建国", 22);
        p2.eat();
        console.log(p2);
    </script>
</body>
</html>